/***************************************************************************
 * 文件名:EtConceptsManagerLocal.java<br>
 * 版本: <br>
 * 描述: <br>
 * 版权所有: <br>
 * //////////////////////////////////////////////////////// <br>
 * 创建者: robo<br>
 * 创建日期: 2010-11-10 <br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 **************************************************************************/
package com.sunwayhorizo.health.ets.base.service;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.DictionaryDTO;
import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.ets.base.common.IBaseDao;
import com.sunwayhorizo.health.ets.base.persistent.EtConcepts;
import com.sunwayhorizo.health.ets.base.persistent.EtVersions;
import com.sunwayhorizo.health.ets.dto.EtConceptsDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;

@Local
public interface EtConceptsManagerLocal extends IBaseDao{

	/**
	 * 分页查询术语
	 * @param currentPage
	 * @param pageSize
	 * @param conceptsName   术语名称
	 * @param versionName    版本名称
	 * @return
	 * @throws Exception
	 */
	public ResultsDTO findEtConcepts(int currentPage,int pageSize,String conceptsName,String conceptsCode,String versionId)throws Exception;
	
	/**
	 * 分页查询总记当数
	 * @param conceptsName   术语名称
	 * @param versionName	 版本名称
	 * @return
	 * @throws Exception
	 */
	public int findEtConceptsCount(String conceptsName,String conceptsCode,String versionId)throws Exception;
	
	/**
	 * 批量新增
	 * @param list
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO newEtConcepts(EtConceptsDTO dto)throws Hl7Exception ;
	
	/**
	 * 批量更新Concepts
	 * @param list
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO updateEtConcepts(EtConceptsDTO list)throws Hl7Exception ;
	
	/**
	 * 批量删除Concepts
	 * @param list
	 * @return
	 * @throws Hl7Exception
	 */
	@SuppressWarnings("rawtypes")
	public ResultsDTO delEtConcepts(List  list) throws Hl7Exception;
	
	/**
	 * 根据条件取得术语列表
	 * @param versionId       版本ID
	 * @param ConceptCode     术语Code
	 * @param conceptName     术语Name
	 * @return 
	 * @throws Exception
	 */
	public List<EtConcepts> findEtConcepts(String versionId,String ConceptCode,String conceptName)throws Exception;
	
	/**
	 * 得到术语的版本对象
	 * @param conceptId   术语ID 
	 * @return
	 * @throws Exception
	 */
	public EtVersions getEtVersion(String conceptId)throws Exception;
	
	public String getConceptCode() throws Exception;
	
	public String getExtendedTypeCode() throws Exception;
	
	public boolean isEquivalent(EtConcepts concept, int equivalenceType)throws Exception;
	
	public boolean  isEquivalent(EtConcepts concept, int equivalenceType, String equivalenceContext, boolean depthAllFlag)throws Exception;
	
	/**
	 * 得到CD类型需要的值
	 * @param codingschemeChName   字典中文名称
	 * @param codingschemeEnName   字典英文名称
	 * @param versionName          版本名称
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryDTO> getConceptsObjects(String codingschemeChName,String codingschemeEnName,String versionName)throws Exception;
	
	/**
	 * 得到CD类型需要的值
	 * @param codingschemeEnName    字典英文名称
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryDTO> getConceptsObjects(String codingschemeEnName)throws Exception;
	
	/**
	 * 获取术语列表(普通列表或者树形列表)
	 * @param versionId
	 * @return
	 * @throws Exception
	 */
	public ResultsDTO findEtConcepts(String versionId)throws Exception;
	
	/**
	 * 术语代码，术语名称分别唯一性验证
	 * @param dto
	 * @return
	 * @throws Exception
	 */
	public ResultsDTO checkUnique(EtConceptsDTO dto)throws Exception;
	
	/**
	 * 根据术语字典id查询默认版本关联的术语项(如果没有默认版本则不返回数据)
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public ResultsDTO getConceptsByCodingSchemeId(String id)throws Exception;
	
	
	ResultsDTO findEtConceptDtosByCSNameAndVersionNameAndConceptCodeAndModelCode(String codingschemeEnName,String versionName,String conceptCode,String modelCode);
    
	public List<String> findLeafDirCodeAll(String codingschemeEnName,String versionName,String conceptCode,String conceptClass) throws Hl7Exception;

}


